// 引入 request 工具
import request from '@/utils/request';

// API 端点配置
const API_ENDPOINTS = {
  suppliers: '/supply/admin/all/user/group',
};

/**
 * 获取供应商数据
 * @returns {Promise<Object>} 按分类分组的供应商数据，格式为 { "分类名": [商家数据] }
 * @throws {Error} 如果请求失败，抛出包含详细错误信息的异常
 */
export const fetchSuppliers = async () => {
  try {
    // 发送 GET 请求
    const response = await request.get(API_ENDPOINTS.suppliers, {
      validateStatus: (status) => status >= 200 && status < 300, // 接受 2xx 状态码
    });

    // 调试：打印完整响应
    console.log('fetchSuppliers response:', {
      status: response.status,
      data: response.data,
      headers: response.headers,
    });

    // 尝试提取数据，兼容不同嵌套结构
    let data = response.data;
    if (!data && response) {
      data = response; // 如果 response.data 为空，尝试直接使用 response
    }
    if (data?.data) {
      data = data.data; // 兼容 data.data 嵌套
    }

    // 验证数据是否为预期对象格式
    if (!data || typeof data !== 'object' || Array.isArray(data)) {
      throw new Error('响应数据格式无效，期望为分类对象');
    }

    // 确保数据包含分类
    if (Object.keys(data).length === 0) {
      console.warn('fetchSuppliers: 响应数据为空对象');
      return data; // 返回空对象，允许前端处理
    }

    return data;
  } catch (error) {
    // 提取错误信息
    const errorMessage =
      error.response?.data?.message ||
      error.message ||
      '获取供应商数据失败，请检查网络或后端服务';

    // 详细错误日志
    console.error('Fetch suppliers error:', {
      message: errorMessage,
      status: error.response?.status,
      data: error.response?.data,
      originalError: error,
    });

    throw new Error(errorMessage);
  }
};
